home *** CD-ROM | disk | FTP | other *** search
/ PC Answers 2003 September / PC Answers September 2003.iso / Software / trial / MonitorIT 5.2.06 / monitorit_fullsetup.exe / data1.cab / Js / AdminComputersFunc1.js < prev    next >
Encoding:
JavaScript  |  2003-06-24  |  20.7 KB  |  574 lines

  1. /* ======================================================================
  2. DESC: Common Alert Functions for the Administer/Analyze Operations
  3.  
  4. PLATFORMS: >= MS IE 4.0
  5.  
  6. USAGE NOTES: 
  7. ====================================================================== */
  8. var GetMIBFlag = 0;
  9. var GotMIBData = false;
  10. var GetMIBBusy = false;
  11. function processGetMIBList(PF) {
  12.     GetMIBFlag = PF;
  13.     if ( PF == 0 && GotMIBData ) 
  14.         return; // ignore if already have data and just selecting the SNMP tab
  15.     if ( GetMIBBusy ) 
  16.         return;
  17.  
  18.     SetButtonState(GetMIBButton, "1"); // disabled
  19.     MIBObjectArr.length = 0;
  20.     if ( top.banner.MIBObjectList.length > 0 && !PF ) {
  21.         saveButtonState();
  22.         processMIBListResponse(top.banner.MIBObjectList);
  23.         return;
  24.     }
  25.     rstat = RpmCC_AC.OidDefs("4","","~~");
  26.     if ( rstat ) { // if unable to initiate request        
  27.         MIBObjectArr[1] = "Error attempting to retrieve MIB Objects";
  28.         if ( PF ) {
  29.            alert("Error attempting to retrieve MIB Objects");
  30.         }
  31.         SetButtonState(GetMIBButton, "0"); // enabled
  32.     }
  33.     else {
  34.         GetMIBBusy = true;
  35.           SetCursor("wait");
  36.           top.banner.processStartComm();
  37.         top.Rstatus.Pstat("Moment please while MIBs are analyzed",true);
  38.         saveButtonState();
  39.     }
  40. }
  41.  
  42. var MIBObjectArr = new Array();
  43. var MIBObjectCheckArr = new Array();
  44. var UnsortedWarr = new Array();
  45. function processMIBListResponse(ostrg) {
  46.     top.banner.MIBObjectList = ostrg; // save it
  47.     UnsortedWarr = ostrg.split("~");
  48.     if ( UnsortedWarr.length > 2 ) {
  49.          UnsortedWarr[0] = "";    
  50.         UnsortedWarr[UnsortedWarr.length-1] = "zzzzzzzzz"; // force as last after sorted
  51.         MIBObjectArr = UnsortedWarr.sort();
  52.     }
  53.     
  54.     //Reset Object checked array
  55.     for ( var i=0; i<MIBObjectArr.length; i++ ) {
  56.          MIBObjectCheckArr[i] = "0";      
  57.     }
  58.     var GetOK = ( UnsortedWarr.length == 2 && UnsortedWarr[1].indexOf("MIB Processing Error",0) == 0 ) ? false : true;
  59.     SetButtonState(GetMIBButton, "0"); // enabled
  60.     top.Rstatus.Pstat("Done");
  61.     restoreButtonState();
  62.     GetMIBBusy = false;
  63.     SetCursor("auto");
  64.       top.banner.processStopCommX();
  65.     if ( !GetOK ) {
  66.           alert(UnsortedWarr[1]+"\n\nCorrect problem with the MIB or remove from the '...\Mibs' folder\nThen press the 'Reprocess' button to analyze the MIBs again");
  67.     }
  68.     else if ( GetMIBFlag ) {
  69.           alert("MIBs successfully processed!");
  70.     }
  71.     if ( GetOK ) {
  72.         if ( !GetMIBFlag && AC_SNMPEnabled.checked && ( CMode == "New" || CMode == "Edit") ) {
  73.             SetButtonState(MIBObjectButton,"0");
  74.         }
  75.         if ( AC_StoreArr.length > CurrentSelectedComputer+11 ) {
  76.             var sarr = new Array();
  77.             sarr = AC_StoreArr[CurrentSelectedComputer+11].split(":!");
  78.             //Reset Object checked array
  79.             if ( sarr.length >= 5 && CMode != "New" ) {
  80.                 var sarr1 = new Array();
  81.                 sarr1 = sarr[1].split(";!");
  82.                 // Now set the appropriate ones
  83.                 for ( var i=0; i<sarr1.length; i++ ) {
  84.                     for ( var j=1; j<MIBObjectArr.length-1; j++ ) {
  85.                         if ( sarr1[i] == MIBObjectArr[j] ) {   
  86.                             MIBObjectCheckArr[j] = "1";
  87.                             break;
  88.                         }
  89.                     }
  90.                 }
  91.                 displayMIBObjectChoices();
  92.             }
  93.         }
  94.         GotMIBData = true;
  95.     }
  96. }    
  97. function processMIBList() {    
  98.     if ( UnsortedWarr.length == 2 && UnsortedWarr[1].indexOf("MIB Processing Error",0) == 0 ) {
  99.        alert(UnsortedWarr[1]+"\n\nCorrect problem with the Mib or remove from the '...\Mibs' folder\nThen press the 'Reprocess' button to analyze the MIBs again");
  100.        return;
  101.     }
  102.     PopUpOID.style.display = "";
  103.     AC_MIBSel.style.display = "none";
  104.     MIBTreeIndex = 1;
  105.     OID_Data.innerHTML = "";
  106.     processMIBListContinue();
  107. }
  108. function processMIBListContinue() {    
  109.     Tid = null;
  110.     var CCEs = "";
  111.     var i = MIBTreeIndex;
  112.     var loopcount = 0;
  113.     for ( ; i<MIBObjectArr.length-1 && loopcount < 25; loopcount++, i++ ) {
  114.         CCEs += "<table border='0' cellpadding='1' cellSpacing='0' width='460'><tr>";
  115.           CCEs += "<td width='10'></td><td width='11' align='center'><img id='oid_chk"+i;
  116.         if ( MIBObjectCheckArr[i] == "1" ) {
  117.            CCEs += "' checked='1' src='images/Checked.gif'"; 
  118.         }
  119.         else {
  120.            CCEs += "' checked='0' src='images/Unchecked.gif'";
  121.         }
  122.           CCEs += "style='cursor:hand' onclick='procOIDCmpImgClick(this)' width='9' height='9'></td>";
  123.         CCEs += "<td width='*' id='oid_nme"+i;
  124.         CCEs += "' style='cursor:hand' onclick='procOIDCmpImgClick(this)' class='optext'>  " + MIBObjectArr[i]+"</td>";
  125.         CCEs += "</tr></table>";
  126.     }
  127.       OID_Data.style.overflow = ( i > 15 ) ? "scroll" : "";
  128.     OID_Data.insertAdjacentHTML("beforeEnd",CCEs);
  129.     MIBTreeIndex = i;
  130.     if ( i < MIBObjectArr.length-1 ) { // continue if not done
  131.             Tid = setTimeout("processMIBListContinue()",50); // delay 50 ms. then process Tree           
  132.     }    
  133. }
  134.  
  135. function processOID_OK() {
  136.     PopUpOID.style.display = "none";
  137.     AC_MIBSel.style.display = "";
  138.     displayMIBObjectChoices(); // display them
  139. }
  140. function processOID_Cancel() {
  141.     PopUpOID.style.display = "none";
  142.     AC_MIBSel.style.display = "";
  143. }
  144. /* Process Click to Check or Uncheck an OID */
  145. function procOIDCmpImgClick(CmpIm) {
  146.     isx = CmpIm.id;  
  147.     if ( isx.charAt(0) != "o") 
  148.                 return;
  149.     var cx = isx.substring(7,isx.length); // Strip off index
  150.     var CObj = document.all["oid_chk"+cx]; // Clicked Check box
  151.     if ( CObj.checked == "1" ) { // if currently Checked, Uncheck
  152.         CObj.src = "images/Unchecked.gif";
  153.        CObj.checked = "0"; // Set Unchecked
  154.        MIBObjectCheckArr[parseInt(cx,10)] = "0";
  155.    }
  156.     else { // otherwise Check
  157.         CObj.src = "images/Checked.gif";
  158.        CObj.checked = "1"; // Set Checked
  159.        MIBObjectCheckArr[parseInt(cx,10)] = "1";
  160.     }
  161. }
  162. function displayMIBObjectChoices() {
  163.     var hFlag = false;
  164.     AC_MIBSel.innerHTML = ""; // clear
  165.     for ( var i=1; i<MIBObjectArr.length-1; i++ ) {
  166.         if ( MIBObjectCheckArr[i] == "1" ) { // if Chosen
  167.             if ( !hFlag ) {
  168.                 addElementToSelect(AC_MIBSel,"List of SNMP Objects for this server/device...");
  169.                 addElementToSelect(AC_MIBSel,"___________________________________");
  170.                 hFlag = true;
  171.             }
  172.             addElementToSelect(AC_MIBSel,MIBObjectArr[i]);
  173.         }
  174.     }
  175. }
  176. function createMIBObjectArray() {
  177.     var gOIDstrg = ""; // reset 
  178.     // Find & create array of selected OID
  179.     for ( var i=1; i<MIBObjectArr.length-1; i++ ) {
  180.         if ( MIBObjectCheckArr[i] == "1" ) { // if Chosen
  181.             gOIDstrg += MIBObjectArr[i]+";!";
  182.         }
  183.     }
  184.     return gOIDstrg;
  185. }
  186.  
  187. function processWMButton() {    
  188.     ServiceSelect.style.visibility = "hidden";
  189.     AC_MIBSel.style.visibility="hidden";
  190.     WM_Data.innerHTML = "";
  191.     PopUpWatchMember.style.display = "";
  192.     var cid = AC_StoreArr[(CurSelectIdx*ComputerRecLength)+7]; // Computer ID
  193.     RpmCC_AC.NetStatFunction("GetWatchMembers~"+cid);
  194.       SetCursor("wait");
  195.       top.banner.processStartComm();
  196. }
  197.  
  198. var WatchTypeString = new Array("","CounterWatch","EventLogWatch","WinServiceWatch", "FileWatch","SNMPTrapWatch","SYSLOGWatch","ServerWatch","ProcessWatch");
  199. var WatchTypeImage = new Array("","Objects","sEventViewer","WinServices", "NewImg","SNMPTrapDisplaySm","SyslogDisplaySm","sAdminServers","ProcessWatch");
  200.  
  201. var WatchCheckArr = new Array();
  202. var WatchOStatArr = new Array();
  203. var WatchAGIDArr     = new Array();
  204. var WatchSWArr = new Array();
  205. var WatchTypeArr = new Array();
  206.  
  207. function processWMList(csArg) {
  208.     var wrkarr = new Array();
  209.     var CCEs = "";    
  210.     var warr = new Array();
  211.     var parr = new Array();
  212.     var darr = new Array();
  213.     var WatchCount = 0;
  214.  
  215.     WatchCheckArr.length = 0; 
  216.     WatchOStatArr.length = 0; 
  217.     WatchAGIDArr.length = 0; 
  218.     WatchSWArr.length = 0; 
  219.     WatchTypeArr.length = 0; 
  220.  
  221.     WM_Data.innerHTML = "";
  222.     wrkarr = csArg.split("~-~");
  223.     for ( var i=1; i<wrkarr.length; i++ ) {
  224.         warr.length = 0;
  225.         warr = wrkarr[i].split("~+~");
  226.         warr.sort();
  227.         
  228.         parr = warr[warr.length-1].split("{");
  229.         var WatchType = parseInt(parr[1],10);
  230.         CCEs += "<br><table border='0' cellpadding='1' cellSpacing='0' width='580'><tr>";
  231.        CCEs += "<td width='10'></td><td width='11' align='center'><img src='images/" + WatchTypeImage[ WatchType ] +".gif' align='absmiddle' height='16' width='16'></td>";
  232.          CCEs += "<td width='*' class='optextb'>" + WatchTypeString[ WatchType ] +"<br></td>";
  233.         CCEs += "</tr></table>";
  234.         
  235.         for ( var j=1; j<warr.length-1; j++ ) {
  236.            parr.length = 0;
  237.            parr = warr[j].split("~");
  238.            
  239.            WatchCheckArr[WatchCount] = parr[4]; // Save current checked/member status
  240.            WatchOStatArr[WatchCount] = parr[4];
  241.              WatchAGIDArr[WatchCount] = parr[3]; // AGID
  242.              WatchSWArr[WatchCount] = parr[5]; // ServerWatch type if applicable
  243.              WatchTypeArr[WatchCount] = WatchType;
  244.  
  245.              CCEs += "<table border='0' cellpadding='1' cellSpacing='0' width='580'><tr>";
  246.              
  247.            CCEs += "<td width='10'></td><td width='11' align='center'><img id='wm_chk"+WatchCount+"'";
  248.              if ( parr[4] == "1" ) {
  249.                 CCEs += "' checked='1' src='images/Checked.gif'"; 
  250.              }
  251.              else {
  252.                 CCEs += "' checked='0' src='images/Unchecked.gif'";
  253.              }
  254.              darr = parr[2].split("[]");
  255.            CCEs += "style='cursor:hand' onclick='procWMImgClick(this)' width='9' height='9'></td>";
  256.              CCEs += "<td width='*' id='wm_nme"+WatchCount+"' ";
  257.              CCEs += "style='cursor:hand' onclick='procWMImgClick(this)' class='optext'>  ";
  258.              CCEs += parr[1];
  259.              if ( darr[0] != "" ) {
  260.                 CCEs += "  ( " +darr[0] +" )";
  261.             }
  262.              CCEs += "</td>";
  263.             CCEs += "</tr></table>";
  264.             ++WatchCount;     
  265.        }
  266.     }  
  267.     CCEs += "<br>";
  268.       WM_Data.style.overflow = "scroll";
  269.     WM_Data.insertAdjacentHTML("beforeEnd",CCEs);
  270.     SetCursor("auto");
  271.       top.banner.processStopCommX();
  272. }
  273.  
  274. function processWM_Save() {
  275.     var cid = AC_StoreArr[(CurSelectIdx*ComputerRecLength)+7]; // Computer ID
  276.     var WArg = "", cfm="";
  277.     var ConfirmMsg = "Make the following Watch/Alert changes for '"+AC_StoreArr[(CurSelectIdx*ComputerRecLength)+0]+"':\n";
  278.     for ( var i=0; i < WatchCheckArr.length; i++ ) {
  279.         if ( WatchCheckArr[i] != WatchOStatArr[i] ) {
  280.         // Status has changed
  281.             WArg += "~" + WatchAGIDArr[i];
  282.             WArg += "~" + WatchCheckArr[i];
  283.             WArg += "~" + WatchTypeArr[i];
  284.             WArg += "~" + WatchSWArr[i];
  285.             var NObj = document.all["wm_nme"+i]; // Name
  286.             if ( WatchCheckArr[i] == "1" ) {
  287.                 cfm = "-Add to '"+NObj.innerText+" '\n";
  288.             }
  289.             else {
  290.                 cfm = "-Remove from '"+NObj.innerText+" '\n";
  291.             }
  292.             ConfirmMsg += cfm;
  293.         }
  294.     }
  295.     if ( WArg != ""  ) {
  296.         if ( !confirm(ConfirmMsg) ) {
  297.             return;
  298.         }
  299.         else {
  300.              RpmCC_AC.NetStatFunction("SetWatchMembers~"+cid+WArg);
  301.         }            
  302.     }
  303.     else {
  304.         alert("No Watch/Alert changes made, so nothing to Save!");
  305.     }
  306.     ServiceSelect.style.visibility = "visible";
  307.     AC_MIBSel.style.visibility="visible";
  308.     PopUpWatchMember.style.display = "none";
  309.     if ( AC_NameSel.style.visibility != "hidden" ) {
  310.         AC_NameSel.focus();
  311.     }
  312. }
  313.  
  314. function processWM_Cancel() {
  315.     ServiceSelect.style.visibility = "visible";
  316.     AC_MIBSel.style.visibility="visible";
  317.     PopUpWatchMember.style.display = "none";
  318.     if ( AC_NameSel.style.visibility != "hidden" ) {
  319.         AC_NameSel.focus();
  320.     }
  321. }
  322. /* Process Click to Check or Uncheck an OID */
  323. function procWMImgClick(CmpIm) {
  324.     isx = CmpIm.id;  
  325.     if ( isx.charAt(0) != "w") 
  326.                 return;
  327.     var cx = isx.substring(6,isx.length); // Strip off index
  328.     var indx = parseInt(cx,10);
  329.     var CObj = document.all["wm_chk"+cx]; // Clicked Check box
  330.     if ( CObj.checked == "1" ) { // if currently Checked, Uncheck
  331.         CObj.src = "images/Unchecked.gif";
  332.        CObj.checked = "0"; // Set Unchecked
  333.        WatchCheckArr[indx] = "0";
  334.    }
  335.     else { // otherwise Check
  336.        if ( WatchSWArr[indx] != "0") {
  337.            for ( var i=0; i<WatchSWArr.length; i++ ) {
  338.                if ( i == indx ) continue;
  339.                if ( WatchSWArr[i] == WatchSWArr[indx] && WatchCheckArr[i] == "1" ) {
  340.                    var NObj = document.all["wm_nme"+i]; // Name
  341.                    alert("Member of only one Watch per IP Service type allowed for ServerWatch!\nCurrently member of '"+NObj.innerText+" '\n\nUncheck '"+NObj.innerText+" ' if you want a different Watch of this IP Service type"); 
  342.                     return; // ignore
  343.                 }
  344.             }                
  345.         }
  346.         CObj.src = "images/Checked.gif";
  347.        CObj.checked = "1"; // Set Checked
  348.        WatchCheckArr[indx] = "1";
  349.     }
  350. }
  351.  
  352. //---------------------------------------------------------------------------------
  353. // WMI Report Output
  354. function processHWInfoButton() {
  355.     SetButtonState(HWInfoButton,"1");
  356.     ServiceSelect.style.visibility = "hidden";
  357.     AC_MIBSel.style.visibility="hidden";
  358.     AC_GroupSel.style.visibility = "hidden";
  359.     AC_ServerSel.style.visibility = "hidden";
  360.     AC_DomainNSel.style.visibility = "hidden";
  361.     WMIR_Data.innerHTML = "";
  362.     PopUpWMIReport.style.display = "";
  363.     var cid = AC_StoreArr[(CurSelectIdx*ComputerRecLength)+7]; // Computer ID
  364.     RpmCC_AC.NetStatFunction("GetWMIConfigInfo~"+cid);
  365.     WMIComputerCountTotal = 1;
  366.       SetCursor("wait");
  367.       top.banner.processStartComm();
  368. }
  369. function processWMIConfig(csArg) {
  370.     var wrkarr = new Array();
  371.     wrkarr = csArg.split("~-~");
  372.     if ( wrkarr[1] == "Begin" ) {
  373.         processWMIReportBegin();
  374.       }
  375.     else if ( wrkarr[1] == "End" ) {
  376.         WMIReportEndReceived = true;
  377.     }
  378.     else {
  379.         processWMIReportData(csArg);
  380.     }
  381. }
  382.  
  383. function processWMIRepOKButton() {
  384.     top.Rstatus.Pstat("");
  385.     ServiceSelect.style.visibility = "visible";
  386.     AC_MIBSel.style.visibility="visible";
  387.     AC_GroupSel.style.visibility = "visible";
  388.     AC_ServerSel.style.visibility = "visible";
  389.     AC_DomainNSel.style.visibility = "visible";
  390.     PopUpWMIReport.style.display = "none";
  391.     if ( AC_NameSel.style.visibility != "hidden" ) {
  392.         AC_NameSel.focus();
  393.     }
  394. }
  395.  
  396. var WRTid = null;
  397. var WMIROIx = 0;
  398. var WMIReportEndReceived = false;
  399. var WMIDetailsArr = new Array();
  400. var WMIDetailsIx = 0;
  401. var WMIRCount = 0;
  402. var WMIPrevCID = "";
  403. var WMIPrevObj = "";
  404. var WMIComputerCountCurrent = 0;
  405. var WMIComputerCountTotal = 0;
  406. function processWMIReportBegin() {
  407.     WMIDetailsArr.length = 0;
  408.     WMIDetailsIx = 0;
  409.     WMIRCount = 0;
  410.     WMIROIx = 0;    
  411.     WMIReportEndReceived = false;
  412.     WMIPrevObj = WMIPrevCID = "";
  413.     WMIComputerCountCurrent = 0;
  414.     
  415.     /* Format Details for output */
  416.     var sob = "";
  417.       sob += "<center><table border='1' cellpadding='0' cellSpacing='0' width='584'>";
  418.     sob += "<tr><td width='100%' colspan='2' align='center' style='background-color:activeborder' class='optextb'>";
  419.     sob += "Hardware Configuration Details Report"
  420.     sob += "</td></tr></table></center>";
  421.  
  422.    WMIR_Data.insertAdjacentHTML("beforeEnd",sob);
  423.     WMIR_Data.style.overflow = "scroll";    
  424.     WRTid = setTimeout("processWMIReportOutputThread()",100); 
  425. }
  426.  
  427. function processWMIReportData(csArg) {
  428.     WMIDetailsArr[ WMIDetailsIx ] = csArg;
  429.     WMIDetailsIx++
  430. }
  431.  
  432. function processWMIReportOutputThread() {
  433.     WRTid = null; //reset    
  434.     while ( WMIROIx < WMIDetailsIx ) {
  435.         processWMIReportOutput(WMIROIx);
  436.         ++WMIROIx;
  437.     }
  438.     if ( WMIReportEndReceived == false ) {
  439.         WRTid = setTimeout("processWMIReportOutputThread()",100); 
  440.         return;
  441.     }
  442.  
  443.       SetCursor("auto");
  444.     top.banner.processStopCommX();
  445.     SetButtonState(HWInfoButton,"0");
  446.     SetButtonState(WMIRepOKButton,"0");
  447.     SetButtonState(WMIRepPrintButton,"0");
  448.     top.Rstatus.Pstat("Done",true);
  449.  
  450.     var sob = "";
  451.       sob += "<center><table border='0' cellpadding='0' cellSpacing='3' width='584'>";
  452.     sob += "<tr height='3'><td width='100%' class='optext'><hr size='2' style='color:c8c8c8'></td></tr></table>";
  453.     
  454.    WMIR_Data.insertAdjacentHTML("beforeEnd",sob);
  455.    if ( WMIDetailsIx == 0 ) {
  456.        var amsg = "No Hardware Configuration data available.\n\n";
  457.        amsg += "Agent version 5.2.06 or greater is required on a server/workstation\n";
  458.        amsg += "in order to obtain its Hardware Configuration details.\n\n";
  459.        amsg += "On NT 4.0 servers, you may need to install the 'WMICore.exe'\n";
  460.        amsg += "to enable the WMI services. Go to 'wwww.microsoft.com/downloads'\n"
  461.        amsg += "and search for 'WMICore.exe' for the download link.\n";
  462.        alert(amsg);   
  463.     }
  464.     //WMIR_Data.style.overflow = (WMIR_Data.scrollHeight >= WMIR_Data.clientHeight) ? "scroll" : "";    
  465. }
  466.  
  467. function processWMIReportOutput(windex) {
  468.     var warr = new Array();
  469.     var parr = new Array();
  470.     var sob = "";
  471.     
  472.     warr = WMIDetailsArr[windex].split("~-~");
  473.     parr = warr[1].split("[&]");
  474.  
  475.     if ( parr[0] != WMIPrevCID ) {
  476.         WMIPrevCID = parr[0];
  477.        ++WMIComputerCountCurrent;
  478.         top.Rstatus.Pstat("One moment while Hardware Configuration Details are retrieved; Processing "+WMIComputerCountCurrent+" of "+WMIComputerCountTotal,true);
  479.        if ( WMIComputerCountCurrent > 1 ) { 
  480.             sob += "<center><table border='0' cellpadding='0' cellSpacing='3' width='584'>";
  481.               sob += "<tr height='3'><td width='100%' class='optext'><hr size='2' style='color:c8c8c8'></td></tr></table>";
  482.  
  483.             sob += "<center style='page-break-before: always'><table border='1' cellpadding='0' cellSpacing='0' width='584'>";
  484.             sob += "<tr><td width='100%' colspan='2' align='center' style='background-color:activeborder' class='optextb'>";
  485.             sob += "Hardware Configuration Details Report"
  486.             sob += "</td></tr></table></center>";           
  487.         }
  488.         
  489.         for (var k=0; k < AC_StoreArr.length; k+=ComputerRecLength) {
  490.             if ( AC_StoreArr[k+7] == WMIPrevCID ) {
  491.                 break;
  492.             }
  493.         }
  494.         if ( k < AC_StoreArr.length ) {      
  495.              sob += "<center><table border='0' cellpadding='0' cellSpacing='3' width='584'>";
  496.             sob += "<tr height='3'><td width='100%' class='optext'><hr size='2' style='color:c8c8c8'></td></tr></table>";
  497.  
  498.            sob += "<center><table border='1' cellpadding='0' cellSpacing='0' width='584'>";
  499.             sob += "<tr style='background-color:c8c8c8'>";
  500.             sob += "<td style='border-width:0' width='60' align='left' class='optextn'> Name</td>"
  501.             sob += "<td style='font-size:11pt; border-width:0' width='*' align='left' class='optext'>: " + AC_StoreArr[k] +"</td></tr>";
  502.                 
  503.             sob += "<tr style='background-color:c8c8c8'>";
  504.             sob += "<td style='border-width:0' width='60' align='left' class='optextn'> Descr</td>"
  505.              sob += "<td style='font-size:11pt; border-width:0' width='*' align='left' class='optext'>: " + AC_StoreArr[k+2] +"</td></tr>";
  506.                  
  507.               sob += "<tr style='background-color:c8c8c8'>";
  508.             sob += "<td style='border-width:0' width='60' align='left' class='optextn'> Addr</td>"
  509.              sob += "<td style='font-size:11pt; border-width:0' width='*' align='left' class='optext'>: " + AC_StoreArr[k+5] +"</td></tr>";
  510.                  
  511.              sob += "<tr style='background-color:c8c8c8'>";
  512.              sob += "<td style='border-width:0' width='60' align='left' class='optextn'> OS Ver</td>"
  513.              sob += "<td style='font-size:11pt; border-width:0' width='*' align='left' class='optext'>: " + AC_StoreArr[k+4] +"</td></tr>";
  514.                  
  515.              sob += "<tr style='background-color:c8c8c8'>";
  516.              sob += "<td style='border-width:0' width='60' align='left' class='optextn'> Agent</td>"
  517.              sob += "<td style='font-size:11pt; border-width:0' width='*' align='left' class='optext'>: " + AC_StoreArr[k+9] +"</td></tr>";                 
  518.             sob += "</table></center>";
  519.         }
  520.     }    
  521.     if ( parr[1] != WMIPrevObj ) {
  522.         WMIPrevObj = parr[1];
  523.         sob += "<center><table border='0' cellpadding='0' cellSpacing='3' width='584'>";
  524.         sob += "<tr height='3'><td width='100%' class='optext'><hr size='2' style='color:c8c8c8'></td></tr></table>";
  525.     }
  526.     sob += "<center><table border='0' cellpadding='0' cellSpacing='3' width='584'>";
  527.     sob += "<tr><td width='100%' class='optextb' style='background-color:c8c8c8'>"+parr[1]+"</td></tr></table>";
  528.                 
  529.     var bgColor
  530.     var oarr = new Array();
  531.      var darr = new Array();
  532.     oarr = parr[2].split("[+]");
  533.              
  534.      sob += "<center><table border='0' cellpadding='0' cellSpacing='3' width='584'>";
  535.      for ( var i=0; i<oarr.length; i++ ) {
  536.          darr.length = 0;
  537.          darr = oarr[i].split("[-]");
  538.         bgColor = ( ++WMIRCount % 2 == 0 ) ? "e0e0e0" : "white";
  539.          sob += "<tr style='background-color:"+bgColor+"' >";
  540.          sob += "<td width='25%' align='left' class='optext'>"+darr[0]+"</td>";
  541.          sob += "<td width='*' align='left' class='optext'>" + darr[1] +"</td></tr>";
  542.      }
  543.      sob += "</table>";
  544.    WMIR_Data.insertAdjacentHTML("beforeEnd",sob);
  545.  
  546. function processPrintWMIReport() {
  547.     if ( !top.banner.IE55orBetter ) {
  548.         alert("Print requires IE 5.5/SP1 or greater. Download current, free IE update from Microsoft's web site");
  549.         return;
  550.     }
  551.     var DiscStatWindow = null;
  552.     FakeBut.click();    // simulate event to call "savePageCoord(...)"
  553.     var wprop = "height="+top.banner.bCh+",width="+top.banner.bCw;
  554.     wprop += ",top="+(top.banner.bY-28)+",left="+(top.banner.bX-4)+",scrollbars";
  555.     var rName = ""+Math.random(); // use Random number to get unique Window name
  556.     rName = rName.substring(2,rName.length);
  557.     DiscStatWindow = window.open("",rName,wprop);
  558.     if ( DiscStatWindow == null ) {
  559.         return;   
  560.     }
  561.     var dh = "<html><head><title>MonitorIT - Hardware Configuration Details Report</title>";
  562.     dh += "<link rel='stylesheet' type='text/css' href='css/Rpmstyle.css'>";
  563.     dh += "</head><body";
  564.     dh += " title='Exit to Close Window when Printing is complete'>"; 
  565.     dh += WMIR_Data.innerHTML;    
  566.     dh += "</body></html>";
  567.     DiscStatWindow.document.open();
  568.     DiscStatWindow.document.write(dh)
  569.     DiscStatWindow.document.close();
  570.     DiscStatWindow.print();
  571. }      
  572. //-------------------------------------------------------------------------------------------------------
  573.